package com.cmc.cloud.cmclink.doc.service.si;

import com.cmc.cloud.cmclink.doc.entity.BlnoPaymentDO;
import com.cmc.cloud.cmclink.doc.vo.blnopaymentvo.BlnoPaymentCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnopaymentvo.BlnoPaymentPageReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnopaymentvo.BlnoPaymentUpdateReqVO;
import com.cmes.framework.common.pojo.PageResult;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 提单指定支付方式信息 Service 接口
 *
 * @author 集运管理员
 */
public interface BlnoPaymentService {

    /**
     * 创建提单指定支付方式信息
     *
     * @param createReqVO 创建信息
     */
    void createBlnoPayment(@Valid BlnoPaymentCreateReqVO createReqVO);

    /**
     * 更新提单指定支付方式信息
     *
     * @param updateReqVO 更新信息
     */
    void updateBlnoPayment(@Valid BlnoPaymentUpdateReqVO updateReqVO);

    /**
     * 删除提单指定支付方式信息
     *
     * @param id 编号
     */
    void deleteBlnoPayment(Long id);
    /**
     * 删除提单指定blnoId支付方式信息
     *
     * @param blnoId 编号
     */
    void deleteBlnoPaymentByblnoId(Long blnoId);

    /**
     * 获得提单指定支付方式信息
     *
     * @param id 编号
     * @return 提单指定支付方式信息
     */
    BlnoPaymentDO getBlnoPayment(Long id);

    /**
     * 获得提单指定支付方式信息列表
     *
     * @param id binoId 编号
     * @return 提单指定支付方式信息
     */
    List<BlnoPaymentDO> getBlnoPaymentsByBlnoId(Long id);
    /**
     * 获得提单指定支付方式信息列表
     *
     * @param ids binoId 列表
     * @return 提单指定支付方式信息
     */
    List<BlnoPaymentDO> getBlnoPaymentsByBlnoIds(List<Long> ids);
    /**
     * 获得提单指定支付方式信息列表
     *
     * @param ids 编号
     * @return 提单指定支付方式信息列表
     */
    List<BlnoPaymentDO> getBlnoPaymentList(Collection<Long> ids);

    /**
     * 获得提单指定支付方式信息分页
     *
     * @param pageReqVO 分页查询
     * @return 提单指定支付方式信息分页
     */
    PageResult<BlnoPaymentDO> getBlnoPaymentPage(BlnoPaymentPageReqVO pageReqVO);

    /**
     * 创建 修改 删除 si 指定支付方式信息
     *
     * @param blnoId
     * @param newList 修改
     * @param oldList 原信息
     */
    void createOrUpdateAndDeleteBatch(Long blnoId, List<BlnoPaymentUpdateReqVO> newList, List<BlnoPaymentUpdateReqVO> oldList);

}
